//페이지 구성완료후 이벤트
$("#training").die();
$("#training").live("pageinit", function() {
	// 페이지 정보
	var page = {
		"dom" : $(this),
		"id" : this.id
	}
	// 모델
	var model = (function() {
		var my = {};

		// 로컬 스로티지에 Training 세팅하기
		my.setMyTrainingList = function(param) {
			Storage.setLocalData("myTrainingList", param);
		}

		// 로컬 스토리지에서 Training List 가져오기
		my.getMyTrainingList = function(param) {
			return Storage.getLocalData("myTrainingList");
		}
		
		my.setAddTrainingToDiary = function (data, callback) {
			var sql = "insert into diary_base ( 'insert_date', 'title', 'kcal','timestamp', 'type', 'kind') values('" + UTIL.today() + "','" + data.title + "','" + data.kcal + "','" + $.now() + "','training','" + data.timestamp + "')";
			Storage.execDataBase(sql, callback)
		}


		return my;
	})();

	// 뷰
	var view = (function() {
		var my = {};

		// 홈버튼 가져오기
		my.getHomeMoveButton = function() {
			return $("#home_move_button", page.dom);
		}

		// 음식 이동 버튼 가져오기
		my.getFoodMoveButton = function() {
			return $("#food_move_button", page.dom);
		}

		// 운동 이동 버튼 가져오기
		my.getTrainingMoveButton = function() {
			return $("#training_move_button", page.dom);
		}

		// 다이어리 이동 버튼 가져오기
		my.getDiaryMoveButton = function() {
			return $("#diary_move_button", page.dom);
		}

		// 코치 이동 버튼 가져오기
		my.getCoachMoveButton = function() {
			return $("#coach_move_button", page.dom);
		}

		// 운동 리스트
		my.getTrainingList = function() {
			return $(".training_list", page.dom);
		}

		// 운동 리스트 콘텐츠
		my.getTrainingListContent = function() {
			return $(".training_list_content", page.dom);
		}

		// 운동 리스트 템플릿
		my.getTrainingListTemplate = function() {
			return $(".training_list_template", page.dom);
		}

		// 운동 리스트 추가 버튼
		my.getAddTrainingButton = function() {
			return $(".add_training_button", page.dom);
		}

		// 운동 찾기 버튼
		my.getFindTrainingButton = function() {
			return $(".find_training_button", page.dom);
		}

		// 운동 찾기 텍스트
		my.getFindTrainingText = function() {
			return $(".find_training_text", page.dom);
		}

		return my;
	})();

	// 컨트롤러
	var controll = (function() {

		// 리스트 정렬
		var sortTrainingList = function(a, b) {
			try {
				if (a.title > b.title) {
					return 1;
				} else if (a.title < b.title) {
					return -1;
				}
				return 0;
			} catch (e) {
				return 0;
			}
		}

		// 리스트 채우기
		var fillTrainingList = function(data) {
			view.getTrainingListContent().html("");
			var trainingList = ($.isArray(data)) ? data : model.getMyTrainingList();
			try {
				trainingList.sort(sortTrainingList);
			} catch (e) {
			}

			view.getTrainingListContent().onList("setList", trainingList);
		}

		// 리스트 세팅
		view.getTrainingListContent().onList("makeList", {
			'content' : view.getTrainingListContent(),
			'template' : view.getTrainingListTemplate(),
			'target' : function($item) {
				return {
					"TITLE" : $(".title", $item),
					"SUB_TITLE" : $(".sub_title", $item)
				};
			},
			'data' : function($item, data) {
				$item.TITLE.text(data.title);
				$item.TITLE.attr("timestamp", data.timestamp);
				$item.SUB_TITLE.text(data.kcal + " Kcal");
			},
			'onAddsFinish' : function() {
			}
		});
		

		//운동 추가 팝업창
		var addTrainingList = function() {
			var answer = JSON.parse(PLUGIN.popupAddTraining());

			if ($.isEmptyObject(answer)) {
				return false;
			} else if (!answer.title) {
				alert("운동 이름이 없습니다.\n운동 이름을 넣어주세요.");
				return false;
			} else if (!answer.kcal) {
				alert("소모 칼로리가 없습니다.\n소모 칼로리를 넣어주세요.");
				return false;
			}

			var trainingList = model.getMyTrainingList();
			if (!trainingList) {
				trainingList = [ ];
			}
			trainingList.push({
				"title" : answer.title,
				"kcal" : "-" + answer.kcal,
				"timestamp" : String(new Date().getTime())
			});
			model.setMyTrainingList(trainingList);
			fillTrainingList(trainingList);
		}

		var my = {};
		// controll 초기화
		my.init = function() {

			// 초기 데이터 세팅
			fillTrainingList();

			// 홈으로 이동
			view.getHomeMoveButton().bind("tap", function() {
				$.mobile.moveTab("index.html");
			});

			// 운동으로 이동
			view.getFoodMoveButton().bind("tap", function() {
				$.mobile.moveTab(pageUrl.food);
			});

			// 다이어리로 이동
			view.getDiaryMoveButton().bind("tap", function() {
				$.mobile.moveTab("diary.html");
			});

			// 코치로 이동
			view.getCoachMoveButton().bind("tap", function() {
				$.mobile.moveTab(pageUrl.coach);
			});

			// 리스트 클릭시 다이어리 저장 컨펌 띄우기
			view.getTrainingList().die();
			view.getTrainingList().live("click", function() {
				var $title = $(this).find(".title");
				if(confirm($(this).find(".title").text() + "(을)를 다리어리에 저장 하시겠습니까?")){
					var timestamp = $title.attr("timestamp");
					var foodList = model.getMyTrainingList();
					var temp = UTIL.find(foodList, "timestamp", timestamp);
					
					model.setAddTrainingToDiary(temp[0]);
				}
			});
			
			// 리스트 좌우로 푸쉬 시 삭제 컨펌 띄우기
			view.getTrainingList().live("swipe", function() {
				var $title = $(this).find(".title");
				if(confirm($title.text() + "(을)를 삭제 하시겠습니까?")){
					var timestamp = $title.attr("timestamp");
					var trainingList = model.getMyTrainingList();
					var temp = UTIL.deleteObject(trainingList, "timestamp", timestamp);
					model.setMyTrainingList(temp);
					fillTrainingList(temp);
				}
			});

			// 운동 추가 버튼
			view.getAddTrainingButton().bind("click", function() {
				addTrainingList();
			});

			// 특정 운동 찾기
			view.getFindTrainingButton().bind("click", function() {
				var trainingList = model.getMyTrainingList();
				var findTrainingList = [ ];
				findTrainingList = UTIL.find(trainingList, "title", view.getFindTrainingText().val());

				if (!$.isArray(findTrainingList)) {
					alert("찾으려는 운동이 없습니다.");
					return false;
				}
				fillTrainingList(findTrainingList);
			});

			// 엔터키로 찾기
			view.getFindTrainingText().bind("keydown", function(e) {
				if (e.keyCode === 13) {
					view.getFindTrainingButton().trigger("click");
				}
			});
		}

		return my;
	})();

	// controll 초기화 실행
	controll.init();
});
